package chp12.home;

public class PrimeChecker {

    public static void main(String[] args) {
        int number = 13; // 可以替换为用户输入或其他方式获取的值
        boolean result = isPrime(number);
        if (result) {
            System.out.println(number + " 是素数。");
        } else {
            System.out.println(number + " 不是素数。");
        }
    }

    /**
     * 判断一个整数是否为素数
     *
     * @param num 要判断的整数
     * @return 如果是素数则返回true，否则返回false
     */
    public static boolean isPrime(int num) {
        // 小于2的数不是素数
        if (num < 2) {
            return false;
        }
        // 2是唯一的偶数素数
        if (num == 2) {
            return true;
        }
        // 排除所有偶数
        if (num % 2 == 0) {
            return false;
        }
        // 只需要检查到sqrt(num)，因为如果num有一个因子大于其平方根，
        // 那么它必定还有一个因子小于或等于其平方根
        int sqrtNum = (int) Math.sqrt(num);
        for (int i = 3; i <= sqrtNum; i += 2) { // 只检查奇数
            if (num % i == 0) { // 如果能被任何数整除，则不是素数
                return false;
            }
        }
        // 如果不能被任何数整除，则是素数
        return true;
    }
}
